/**
 * Description: 算法相关<br>
 * <dl>
 *     <dt>名词解释:</dt>
 *     <dd>稳定：如果a原本在b前面，而a=b，排序之后a仍然在b的前面；</dd>
 *     <dd>不稳定：如果a原本在b的前面，而a=b，排序之后a可能会出现在b的后面；</dd>
 *     <dd>内排序：所有排序操作都在内存中完成；</dd>
 *     <dd>外排序：由于数据太大，因此把数据放在磁盘中，而排序通过磁盘和内存的数据传输才能进行；</dd>
 *     <dd>时间复杂度： 一个算法执行所耗费的时间。</dd>
 *     <dd>空间复杂度：运行完一个程序所需内存的大小。</dd>
 * </dl>
 * <img src="https://images2017.cnblogs.com/blog/849589/201710/849589-20171015233043168-1867817869.png">
 * <hr>
 * <h3>O(1), O(n), O(log<sup>n</sup>), O(nlog<sup>n</sup>) 的区别</h3>
 * 在描述算法复杂度时，经常用到O(1), O(n), O(log<sup>n</sup>), O(nlog<sup>n</sup>)来表示对应复杂度程度, 不过目前大家默认也通过这几个方式表示空间复杂度 。<br>
 * 那么，O(1), O(n), O(log<sup>n</sup>), O(nlog<sup>n</sup>)就可以看作既可表示算法复杂度，也可以表示空间复杂度。<br>
 * 大O加上()的形式，里面其实包裹的是一个函数f(),O(f()),指明某个算法的耗时/耗空间与数据增长量之间的关系。其中的n代表输入数据的量。<br>
 * <img src="https://img-blog.csdn.net/20180928135003419?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RlZF9jcw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70"><br>
 * 如果ax=N（a>0，且a≠1），那么数x叫做以a为底N的对数，记作x=logaN，读作以a为底N的对数，其中a叫做对数的底数，N叫做真数。<br>
 * <img src="https://img-blog.csdn.net/2018092813475186?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RlZF9jcw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70"><br>
 *
 * @author LiKe
 * @date 2020-09-12 13:12
 */
package cn.caplike.demo.algorithm;